package com.ophiux.utils.encrypt;

import java.io.UnsupportedEncodingException;

/**
 * @desc：加密算法<br>
 * @author: hhl<br>
 * @date: 2021年9月3日 上午9:37:06<br>
 */
public class OphiuxEncrypt {

	public static final String KEY = "ophiux20180620";
	//	private static Logger logger = LoggerFactory.getLogger(OphiuxEncrypt.class);

	public static void main(String[] args) throws Exception {
		String str = "1";

		if (args != null && args.length > 0) {
			str = args[0];
		}

		// logger.info("OphiuxEncrypt:{}",str);

		String rs = Base64Coding.base64Encoding(str.getBytes());
		// logger.info("Base64Coding.base64Encoding:{}",rs);

		rs = Base64Coding.base64Decoding(rs);
		// logger.info("Base64Coding.base64Decoding:{}",rs);

		byte[] rsBytes = DESEncrypt.encrypt(str.getBytes(), KEY);
		// logger.info(" DESEncrypt.encrypt:"+new String (rsBytes));

		rsBytes = DESEncrypt.decrypt(rsBytes, KEY);
		// logger.info(" DESEncrypt.decrypt:"+new String (rsBytes));

		str = encrypt(str);
		// logger.info("encrypt->{}",str);

		str = decrypt(str);
		// logger.info("decrypt->{}",str);

		str = encryptPassWord(str);
		// logger.info("encryptPassWord->{}",str);
	}

	/**
	 * 
	 * Description:编码密码 <br>
	 * 创 建 人: sunrise 创建日期:2018年6月14日 上午11:51:05
	 * 
	 * @param content
	 * @return
	 */
	public static String encryptPassWord(String content) {
		String rs = null;
		try {
			byte[] rsBytes = DESEncrypt.encrypt(content.getBytes(), KEY);
			rs = Base64Coding.base64Encoding(rsBytes);
			rs = JavaMD5Encrypt.getInstance().enCode(rs);
		} catch (Exception e) {

			e.printStackTrace();
		}
		return rs;
	}

	/**
	 * 
	 * Description:加密字符串 <br>
	 * 创 建 人: sunrise 创建日期:2018年7月6日 上午10:29:10
	 * 
	 * @param str
	 * @return
	 */
	public static String encrypt(String str) {
		String rs = null;
		byte[] rsBytes;
		try {
			rsBytes = DESEncrypt.encrypt(str.getBytes("utf-8"), KEY);
			rs = Base64Coding.base64Encoding(rsBytes);
		} catch (UnsupportedEncodingException e) {
			// logger.error("encrypt 参数:{};异常 异常信息：{}",str, e);
			e.printStackTrace();
		}

		return rs;
	}

	/**
	 * 解密字符串
	 * @param str
	 * @return
	 */
	public static String decrypt(String str) {
		String rs = null;
		byte[] temp;
		try {

			temp = Base64Coding.base64DecodingToByte(str);
			temp = DESEncrypt.decrypt(temp, KEY);
			rs = new String(temp);
		} catch (Exception e) {
			e.printStackTrace();
			// logger.error("解密失败 信息：{}",str);
		}
		return rs;
	}

}
